home *** CD-ROM | disk | FTP | other *** search
- 1000 rem-----------------------
- 1010 rem- -
- 1020 rem- disk doctor -
- 1030 rem- -
- 1040 rem- by john tanzini -
- 1050 rem- -
- 1060 rem-----------------------
- 1070 print "[147]select a number.": print
- 1080 print "1. list directory": print
- 1090 print "2. restore a file": print
- 1100 print "3. pack directory": print
- 1110 print "4. list used blocks": print
- 1120 print "5. view or modify": print "block": print
- 1130 print "6. format disk": print
- 1140 print "7. send disk command": print
- 1150 print: print: print "press e to end."
- 1160 get kk$: if kk$="" then 1160
- 1170 if kk$="e" then print "[147]";: end
- 1180 kk = val(kk$)
- 1190 on kk gosub 1380, 1720, 2610, 3350, 3810, 4770, 4950
- 1200 goto 1070
- 1210 rem-----------------------------
- 1220 rem- -
- 1230 rem- disk error subroutine -
- 1240 rem- -
- 1250 rem-----------------------------
- 1260 print: print: print "**** disk error ****"
- 1270 print: print e1$;" ";e2$;" ";e3$;" ";e4$
- 1280 print: print "press any key to"
- 1290 print "return to menu"
- 1300 get k$: if k$="" then 1300
- 1310 return
- 1320 rem-----------------------------
- 1330 rem- -
- 1340 rem- part 1 -
- 1350 rem- list entire directory -
- 1360 rem- -
- 1370 rem-----------------------------
- 1380 open 15,8,15
- 1390 open 2,8,2,"#2"
- 1400 t = 18: s = 1: print "[147]"
- 1410 print#15,"u1:";2;8;t;s
- 1420 input#15, e1$, e2$, e3$, e4$
- 1430 if e1$<>"00" then gosub 1260: goto 1640
- 1440 print#15,"b-p:";2;0
- 1450 get#2,t$: get#2, s$
- 1460 for i = 2 to 226 step 32
- 1470 print#15,"b-p:";2;i
- 1480 get#2, a$: if a$="" then print "";
- 1490 get#2, a$: get#2, a$
- 1500 print "";
- 1510 for j = 1 to 16
- 1520 get#2, a$: print a$;
- 1530 next
- 1540 if a$<>"" then print: print
- 1550 get k$: if k$="" then 1590
- 1560 if k$="e" then 1640
- 1570 get k$: if k$="" then goto 1570
- 1580 if k$="e" then 1640
- 1590 next
- 1600 t = asc(t$+chr$(0)): s = asc(s$+chr$(0))
- 1610 if t>0 and t<36 then goto 1410
- 1620 print: print "press any key to": print "return to menu"
- 1630 get k$: if k$="" then 1630
- 1640 close 2: close 15
- 1650 return
- 1660 rem----------------------------
- 1670 rem- -
- 1680 rem- part 2
- 1690 rem- restore scratched file -
- 1700 rem- -
- 1710 rem----------------------------
- 1720 print "[147]enter name of file"
- 1730 input n1$
- 1740 print: print: print "is the file a"
- 1750 print: print "1. program"
- 1760 print: print "2. sequential file"
- 1770 get k$: if k$="1" then ft = 130: goto 1800
- 1780 if k$="2" then ft = 129: goto 1800
- 1790 goto 1770
- 1800 print: print: print "restoring"; n1$
- 1810 open 15,8,15
- 1820 open 2,8,2,"#0"
- 1830 open 3,8,3,"#1"
- 1840 gosub 2350: rem find file in directory
- 1850 if pt=0 then 2040; rem cannot restore
- 1860 print#15,"b-a:";0;pt;ps
- 1870 input#15,e1$,e2$,e3$,e4$
- 1880 if e1$<>"00" and e1$<>"65" then gosub 1260: return
- 1890 if e1$="65" then 2040: rem cannot restore
- 1900 print#15,"u1:";3;0;pt;ps
- 1910 lt = pt: ls = ps
- 1920 print#15,"b-p:";3;0
- 1930 get#3,pt$: get#3,ps$
- 1940 pt = asc(pt$+chr$(0)): ps = asc(ps$+chr$(0))
- 1950 if pt=0 then goto 2100: rem successful restore
- 1960 print#15,"b-a:";0;pt;ps
- 1970 input#15,e1$,e2$,e3$,e4$
- 1980 if e1$<>"65" and e1$<>"00" then gosub 1260: return
- 1990 if e1$="65" then 2180: rem partial restore
- 2000 goto 1900: rem read another block
- 2010 rem
- 2020 rem ----- cannot restore -----
- 2030 rem
- 2040 print: print: print "*** cannot ***"
- 2050 print "*** restore ***"
- 2060 goto 2280
- 2070 rem
- 2080 rem ----- successful restore -----
- 2090 rem
- 2100 print#15,"b-p:";2;dp
- 2110 print#2,chr$(ft);
- 2120 print#15,"u2:";2;0;t;s
- 2130 print: print: print "*** successful ***": print "*** restore ***"
- 2140 goto 2280
- 2150 rem
- 2160 rem ----- partial restore -----
- 2170 rem
- 2180 print#15,"b-p:";2;dp
- 2190 print#2,chr$(ft);
- 2200 print#15,"u2:";2;0;t;s
- 2210 print#15,"b-p:";3;0
- 2220 print#3,chr$(0);
- 2230 print#15,"b-p:";3;248
- 2240 for z = 1 to 8: print#3,chr$(0);: next
- 2250 print#15,"u2:";3;0;lt;ls
- 2260 print: print: print "*** partial ***"
- 2270 print "*** restore ***"
- 2280 print: print "press any key to": print "return to menu"
- 2290 get k$: if k$="" then goto 2290
- 2300 close 2: close 3: close 15
- 2310 return
- 2320 rem
- 2330 rem ---- find track and sector of file ----
- 2340 rem
- 2350 t = 18: s = 1
- 2360 print#15,"u1:";2;8;t;s
- 2370 input#15, e1$, e2$, e3$, e4$
- 2380 if e1$<>"00" then gosub 1260: pt = 0: goto 2540
- 2390 print#15,"b-p:";2;0
- 2400 get#2,t$: get#2, s$
- 2410 for i = 2 to 226 step 32
- 2420 print#15,"b-p:";2;i
- 2430 get#2, a$: if a$<>"" then 2500
- 2440 get#2, pt$: get#2, ps$
- 2450 n2$ = ""
- 2460 for j = 1 to 16
- 2470 get#2, a$: if a$<>chr$(160) then n2$=n2$+a$
- 2480 next
- 2490 if n1$=n2$ then pt = asc(pt$+chr$(0)): ps = asc(ps$+chr$(0)): dp = i: return
- 2500 next
- 2510 t = asc(t$+chr$(0)): s = asc(s$+chr$(0))
- 2520 if t>0 and t<36 then goto 2360
- 2530 pt = 0
- 2540 return
- 2550 rem----------------------
- 2560 rem- -
- 2570 rem- part 3 -
- 2580 rem- pack directory -
- 2590 rem- -
- 2600 rem----------------------
- 2610 print "[147]is correct disk in": print "drive? (y/n)
- 2620 [161] k$: [139] k$[178]"" [167] 2620
- 2630 [139] k$[179][177]"y" [167] [142]
- 2640 [153]: [153]: [153]
- 2650 [153] "*************"
- 2660 [153] "* packing *
- 2670 print "*************"
- 2680 open 15,8,15
- 2690 open 2,8,2,"#0"
- 2700 open 3,8,3,"#1"
- 2710 rt = 18: rs = 1
- 2720 wt = 18: ws = 1
- 2730 lt = 0
- 2740 df = 0
- 2750 ef = 0
- 2760 gosub 3060: rem next-write-block
- 2770 if ef=1 then 3010
- 2780 gosub 3220: rem next-read-block
- 2790 if ef=1 then 3010
- 2800 for ri = 2 to 226 step 32
- 2810 print#15, "b-p:";3;ri
- 2820 get#3, ft$
- 2830 if ft$="" then 2920
- 2840 if wi>255 then gosub 3060: rem next-write-block
- 2850 if ef=1 then 3010
- 2860 print#15, "b-p:";2;wi
- 2870 print#2, ft$;
- 2880 for i = 1 to 29
- 2890 get#3, a$: print#2, left$(a$+chr$(0),1);
- 2900 next i
- 2910 wi = wi + 32
- 2920 next ri
- 2930 if rt<>0 then 2780
- 2940 if wi<255 then goto 2970
- 2950 gosub 3060: rem next-write-block
- 2960 if df = 1 then 3010
- 2970 print#15, "b-p:";2;wi
- 2980 print#2,chr$(0);
- 2990 wi = wi + 32
- 3000 goto 2940
- 3010 close 2: close 3: close 15
- 3020 return
- 3030 rem
- 3040 rem ---- next-write-block ----
- 3050 rem
- 3060 if lt<>0 then print#15, "u2:";2;0;lt;ls
- 3070 input#15, e1$, e2$, e3$, e4$
- 3080 if e1$<>"00" then ef=1: gosub 1260: return
- 3090 lt = wt: ls = ws
- 3100 if wt=0 then df = 1: return
- 3110 print#15, "u1:";2;0;wt;ws
- 3120 input#15, e1$, e2$, e3$, e4$
- 3130 if e1$<>"00" then ef=1: gosub 1260: return
- 3140 print#15, "b-p:";2;0
- 3150 get#2, wt$: get#2, ws$
- 3160 wt = asc(wt$+chr$(0)): ws = asc(ws$+chr$(0))
- 3170 wi = 2
- 3180 return
- 3190 rem
- 3200 rem ---- next-read-block ----
- 3210 rem
- 3220 print#15,"u1:";3;0;rt;rs
- 3230 input#15, e1$, e2$, e3$, e4$
- 3240 if e1$<>"00" then ef=1: gosub 1260: return
- 3250 print#15, "b=p:";3;0
- 3260 get#3, rt$: get#3, rs$
- 3270 rt = asc(rt$+chr$(0)): rs = asc(rs$+chr$(0))
- 3280 return
- 3290 rem---------------------------
- 3300 rem- -
- 3310 rem- part 4 -
- 3320 rem- list allocated blocks -
- 3330 rem- -
- 3340 rem---------------------------
- 3350 if lf=0 then dim bm%(35,4): lf = 1
- 3360 print "[147]"; tab(4); "track"; tab(10); "sector": print
- 3370 open 15,8,15
- 3380 open 2,8,2,"#0"
- 3390 print#15, "u1:";2;0;18;0
- 3400 input#15, e1$, e2$, e3$, e4$
- 3410 if e1$<>"00" then gosub 1260: goto 3720
- 3420 print#15, "b-p:";2;4
- 3430 for t = 1 to 35
- 3440 for j = 0 to 3
- 3450 get#2, a$
- 3460 bm%(t,j) = asc(a$+chr$(0))
- 3470 next j, t
- 3480 restore
- 3490 nb = 0
- 3500 for n = 1 to 4
- 3510 read t1, t2, ns
- 3520 for t = t1 to t2
- 3530 if t<>18 then nb = nb + bm%(t,0)
- 3540 if bm%(t,0)=ns then 3680
- 3550 s = 0
- 3560 for i = 1 to 3
- 3570 b2 = bm%(t,i)
- 3580 for j = 1 to 8
- 3590 b1 = b2/2: b2 = int(b1)
- 3600 if b1=b2 then print tab(4); t; tab(11); s
- 3610 get k$: if k$="" then 3650
- 3620 if k$="e" then 3720
- 3630 get k$: if k$="" then 3630
- 3640 if k$="e" then 3720
- 3650 s = s + 1
- 3660 if s=ns then 3680
- 3670 next j, i
- 3680 next t, n
- 3690 print: print nb; "blocks free.": print
- 3700 print: print "press any key to": print "return to menu"
- 3710 get k$: if k$="" then 3710
- 3720 close 2: close 15
- 3730 return
- 3740 data 1,17,21,18,24,19,25,30,18,31,35,17
- 3750 rem--------------------------
- 3760 rem- -
- 3770 rem- part 5 -
- 3780 rem- view or modify block -
- 3790 rem- -
- 3800 rem--------------------------
- 3810 if vf=0 then dim b%(255): vf = 1
- 3820 open 15,8,15
- 3830 open 2,8,2,"#0"
- 3840 print "[147] all numbers decimal"
- 3850 print "----------------------": print: print
- 3860 print " 1. read block": print
- 3870 print " 2. view block": print
- 3880 print " 3. modify block": print
- 3890 print " 4. write block back"
- 3900 print: print: print: print "press e to exit"
- 3910 get c$: if c$="" then 3910
- 3920 if c$="e" then close 2: close 15: return
- 3930 c = val(c$)
- 3940 on c gosub 3990, 4130, 4400, 4530
- 3950 goto 3840
- 3960 rem
- 3970 rem---- block read ----
- 3980 rem
- 3990 print "[147]enter track, sector"
- 4000 input tt, ss
- 4010 print#15, "u1:";2;0;tt;ss
- 4020 input#15, e1$, e2$, e3$, e4$
- 4030 if e1$<>"00" then gosub 1260: return
- 4040 print#15,"b-p:";2;0
- 4050 for i = 0 to 255
- 4060 get#2, a$
- 4070 b%(i) = asc(a$ + chr$(0))
- 4080 next
- 4090 return
- 4100 rem
- 4110 rem---- view block ----
- 4120 rem
- 4130 for i = 0 to 3
- 4140 print "[147]track ="; tt; "sect ="; ss: print
- 4150 for j = 0 to 15
- 4160 n = 4*j + 64*i
- 4170 s2$ = ""
- 4180 s1$ = right$(" "+str$(n),3) + chr$(125)
- 4190 for k = 0 to 1
- 4200 m = n + 2*k
- 4210 s1$ = s1$ + right$(" "+str$(b%(m)),3) + "" + right$(" "+str$(b%(m+1)),3) + "[146]"
- 4220 a$ = chr$(32)
- 4230 if b%(m)>31 then if b%(m)<123 then a$ = chr$(b%(m))
- 4240 s2$ = s2$ + a$
- 4250 a$ = chr$(32)
- 4260 if b%(m+1)>31 then if b%(m+1)<123 then a$ = chr$(b%(m+1))
- 4270 s2$ = s2$ + a$
- 4280 next k
- 4290 print s1$; chr$(125); s2$
- 4300 next j
- 4310 print: print: print "press any key to cont"
- 4320 print tab(12); "e to end"
- 4330 get k$: if k$="" then 4330
- 4340 if k$="e" then return
- 4350 next i
- 4360 return
- 4370 rem
- 4380 rem---- change blk ----
- 4390 rem
- 4400 print "[147]press return[146] to"
- 4410 print "return to menu.": print: print: print
- 4420 print "enter location, data"
- 4430 l = -1: d = -1
- 4440 input "(0-255)"; l, d
- 4450 if (l<0)or(d<0) then return
- 4460 if l>255 or d>255 then print "* number too large *": print: goto 4420
- 4470 b%(l) = d
- 4480 print
- 4490 goto 4420
- 4500 rem
- 4510 rem---- block write ----
- 4520 rem
- 4530 print "[147]"; tab(1); tt; "[157],"; ss
- 4540 print "[145][145]enter track, sector"
- 4550 input tt, ss
- 4560 print "are you sure? (y/n)
- 4570 [161] a$: [139] a$[178]"" [167] [137] 4570
- 4580 [139] a$[179][177]"y" [167] [142]
- 4590 [153]
- 4600 [153] "*******************"
- 4610 [153] "* writing block *"
- 4620 [153] "*******************"
- 4630 [152]15,"b-p:";2;0
- 4640 [129] l [178] 0 [164] 255
- 4650 [152]2, [199](b%(l));
- 4660 [130] l
- 4670 [152]15, "u2:";2;0;tt;ss
- 4680 [132]15, e1$, e2$, e3$, e4$
- 4690 [139] e1$[179][177]"00" [167] [141] 1260: [142]
- 4700 [142]
- 4710 [143]-----------------------
- 4720 [143]- -
- 4730 [143]- part 6 -
- 4740 [143]- format a disk -
- 4750 [143]- -
- 4760 [143]-----------------------
- 4770 [153] "loadenter name of disk"
- 4780 [133] na$
- 4790 [153] "disk i.d."
- 4800 [133] id$
- 4810 [153] "is correct disk in": [153] "drive? (y/n)"
- 4820 [161] k$: [139] k$[178]"" [167] 4820
- 4830 [139] k$[179][177]"y" [167] [142]
- 4840 [159] 15,8,15,"n:"[170]na$[170]","[170]id$
- 4850 [132]15, e1$, e2$, e3$, e4$
- 4860 [139] e1$[179][177]"00" [167] [141] 1260
- 4870 [160] 15
- 4880 [142]
- 4890 [143]-----------------------
- 4900 [143]- -
- 4910 [143]- part 7 -
- 4920 [143]- send disk command -
- 4930 [143]- -
- 4940 [143]-----------------------
- 4950 [153] "loadenter disk command": [153]: [153] "?";
- 4960 c$ [178] ""
- 4970 [158] 65487
- 4980 c [178] [194](780)
- 4990 [139] c[179][177]13 [167] c$ [178] c$ [170] [199](c): [137] 4970
- 5000 [159] 15,8,15: [159] 2,8,2,"#"
- 5010 [152]15, c$
- 5020 [132]15, e1$, e2$, e3$, e4$
- 5030 [139] e1$[179][177]"00" [175] e1$[179][177]"01" [167] [141] 1260
- 5040 [160] 2: [160] 15
- 5050 [142]
-